package cn.lingyangwl.agile.pay.pay.model;

import cn.hutool.core.util.URLUtil;
import cn.lingyangwl.agile.pay.model.bo.CashierTokenInfo;
import cn.lingyangwl.agile.pay.common.utils.PayUtils;
import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.JSONObject;
import lombok.Data;

import java.io.Serializable;

/**
 * 系统应用配置项定义Bean
 */
@Data
public class DBApplicationConfig implements Serializable {

    /**
     * 运营系统地址
     */
    private String mgrSiteUrl;

    /**
     * 商户系统地址
     */
    private String mchSiteUrl;

    /**
     * 支付网关地址
     */
    private String paySiteUrl;

    /**
     * oss公共读文件地址
     */
    private String ossPublicSiteUrl;

    /**
     * 生成  【jsapi统一收银台跳转地址】
     */
    public String genUniJsapiPayUrl(CashierTokenInfo tokenInfo) {
        return getPaySiteUrl() + "/payCashier/index?token=" + PayUtils.aesEncode(JSON.toJSONString(tokenInfo));
    }

    /**
     * 生成  【jsapi统一收银台】oauth2获取用户ID回调地址
     */
    public String genOauth2RedirectUrlEncode(CashierTokenInfo tokenInfo) {
        return URLUtil.encodeAll(getPaySiteUrl() + "/payCashier/oauth2Callback?token=" + PayUtils.aesEncode(JSON.toJSONString(tokenInfo)));
    }

    /**
     * 生成  【商户获取渠道用户ID接口】oauth2获取用户ID回调地址
     */
    public String genMchChannelUserIdApiOauth2RedirectUrlEncode(JSONObject param) {
        return URLUtil.encodeAll(getPaySiteUrl() + "/channelUserId/oauth2Callback?token=" + PayUtils.aesEncode(param.toJSONString()));
    }

    /**
     * 生成  【jsapi统一收银台二维码图片地址】
     */
    public String genScanImgUrl(String url) {
        return getPaySiteUrl() + "/scan/imgs/" + PayUtils.aesEncode(url) + ".png";
    }

    /**
     * 生成  【支付宝 isv子商户的授权链接地址】
     */
    public String genAlipayIsvsubMchAuthUrl(String isvNo, String mchAppId) {
        return getPaySiteUrl() + "/channelbiz/alipay/redirectAppToAppAuth/" + isvNo + "_" + mchAppId;
    }

}
